package de.hrw.androidapp;

import java.util.List;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;
import de.hrw.androidapp.model.SpeisePlanWochentag;
import de.hrw.androidapp.util.SpeisePlanXMLParser;

public class MensaScreenAdapter 
extends BaseAdapter 
{
	private LayoutInflater mInflater;

	/**
	 * 
	 */
	private static List<SpeisePlanWochentag> speisePlanWochentage = null;
	
	/**
	 * Constructor.
	 * 
	 * @param context
	 */
	public MensaScreenAdapter(Context context) 
	{
		mInflater = LayoutInflater.from(context);
		if (MensaScreenAdapter.speisePlanWochentage == null)
		{
			String seezeitUrl = ((BasicScreenActivity) context).getAppConfig().getProperty("seezeit.url");
			SpeisePlanXMLParser speisePlanDOMParser = new SpeisePlanXMLParser(seezeitUrl);
			MensaScreenAdapter.speisePlanWochentage = speisePlanDOMParser.parse();
		}
	}
	
	/* (non-Javadoc)
	 * @see android.widget.Adapter#getCount()
	 */
	public int getCount() 
	{
		return MensaScreenAdapter.speisePlanWochentage.size();
	}

	/* (non-Javadoc)
	 * @see android.widget.Adapter#getItem(int)
	 */
	public Object getItem(int position) 
	{
		return position;
	}
	
	/* (non-Javadoc)
	 * @see android.widget.Adapter#getItemId(int)
	 */
	public long getItemId(int position) 
	{
		return position;
	}

	/* (non-Javadoc)
	 * @see android.widget.Adapter#getView(int, android.view.View, android.view.ViewGroup)
	 */
	public View getView(int position, View convertView, ViewGroup parent) 
	{
		ViewHolder holder;
		if (convertView == null) 
		{
			convertView = mInflater.inflate(R.layout.mensaplaneintrag, null);
			holder = new ViewHolder();
			holder.wochentagTextView = (TextView) convertView.findViewById(R.id.wochentagTextView);
			holder.stammessenTextView = (TextView) convertView.findViewById(R.id.stammessenTextView);
			holder.wahlessenTextView = (TextView) convertView.findViewById(R.id.wahlessenTextView);
			holder.spezialTextView = (TextView) convertView.findViewById(R.id.spezialTextView);
			holder.dessertTextView = (TextView) convertView.findViewById(R.id.dessertTextView);
			holder.beilagenTextView = (TextView) convertView.findViewById(R.id.beilagenTextView);

			convertView.setTag(holder);
		}
		else 
		{
			holder = (ViewHolder) convertView.getTag();
		}
		
		SpeisePlanWochentag speisePlanWochentag = MensaScreenAdapter.speisePlanWochentage.get(position);
		
		holder.wochentagTextView.setText(makeWochentagText(speisePlanWochentag));
		holder.stammessenTextView.setText(speisePlanWochentag.getStammessen());
		holder.wahlessenTextView.setText(speisePlanWochentag.getWahlessen());
		holder.spezialTextView.setText(speisePlanWochentag.getSpezial());
		holder.dessertTextView.setText(speisePlanWochentag.getDessert());
		holder.beilagenTextView.setText(speisePlanWochentag.getBeilagen());

		return convertView;
	}

	/**
	 * @param speisePlanWochentag
	 * @return
	 */
	private String makeWochentagText(SpeisePlanWochentag speisePlanWochentag) {
		StringBuffer strBuf = new StringBuffer();
		
		strBuf.append(speisePlanWochentag.getWochentag());
		strBuf.append("\n");
		strBuf.append(speisePlanWochentag.getWochentagDatum());
		
		return strBuf.toString();
	}

	/**
	 * @author tvh-dev
	 *
	 */
	static class ViewHolder 
	{
		TextView wochentagTextView;
		TextView stammessenTextView;
		TextView wahlessenTextView;
		TextView spezialTextView;
		TextView dessertTextView;
		TextView beilagenTextView;
	}
}